//*******************************************************************
//	created:	11:5:2011   11:46
//	filename: 	StdioFile.h
//	author:		tiamo
//	purpose:	stdio file
//*******************************************************************

#pragma once

namespace utils
{
	//
	// stdio file
	//
	class StdioFile
	{
	public:
		//
		// constructor
		//
		StdioFile();

		//
		// destructor
		//
		~StdioFile();

		//
		// open file
		//
		bool openFile(wchar_t const* fileName, wchar_t const* openMode);

		//
		// close
		//
		void close();

		//
		// get content
		//
		DataBuffer getContent();

		//
		// seek
		//
		uint64_t seek(uint64_t offset, int seekMode);

		//
		// read buffer
		//
		uint32_t readBuffer(void* dataBuffer, uint32_t bufferLength);

		//
		// write buffer
		//
		uint32_t writeBuffer(void const* dataBuffer, uint32_t bufferLength);

		//
		// set file size
		//
		void setFileSize(uint64_t fileSize);

		//
		// get offset
		//
		uint64_t getOffset();

		//
		// get length
		//
		uint64_t getFileSize();

		//
		// get file
		//
		FILE* getFile()														{return mFile;}

		//
		// is valid
		//
		bool isValid()														{return !!mFile;}

	private:
		//
		// file
		//
		FILE*																mFile;
	};
}
